{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "646efde1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最近 2 年上涨月数 / 总月数：14 / 24 ≈ 58.33%\n",
      "最近 3 年上涨月数 / 总月数：21 / 36 ≈ 58.33%\n",
      "最近 5 年上涨月数 / 总月数：35 / 60 ≈ 58.33%\n",
      "最近 8 年上涨月数 / 总月数：54 / 96 ≈ 56.25%\n",
      "最近 10 年上涨月数 / 总月数：66 / 120 ≈ 55.00%\n",
      "最近 13 年上涨月数 / 总月数：85 / 156 ≈ 54.49%\n"
     ]
    },
    {
     "data": {
      "image/png": "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gLRnzx4tXbpUM2bMsNqSkpLUqVOnWt9k/IsvvlDHjh114oknWm0XXnih7rnnnjrF8ssvv2jEiBF67LHH1LlzZz344IM69thj9cADDygqKkqvvvqqFi5cqMMPPzzoNgzDsApHP/74oxwOh77//ntdeeWV2rx5c7Xf6Od0Oq11J06cqClTpkgqm7EzaNAga4bQzp07deqpp0qS3w3RpbJLHceOHatJkybpkUce0ahRo/T0009r2rRp2rNnj/75z39ayz7//PNaunRptTlZvHhxlUsDD8X+/fs1ffp0v7aSkhIVFxdr7Nixio6O1o4dO3T00Ufryiuv1BNPPCHTNNWiRQtr+RNOOMH6/44dO/Taa69p4cKFAV/v6KOP1ksvvaS+ffvqvffe048//qi3335brVq10uzZs9W/f3+1b99en3/+uRISEjRw4EBr3UGDBmngwIG64YYb1L17d61Zs0ZnnHGGkpKSNHr0aF133XU69dRT9dVXX0mSbrzxRpmmqeeee67e8gUAAOqOohQAAKiVNWvWyDRNdenSxa99+vTpfpe2VWfbtm3q2bOnX1t6ero2btwoj8dT68vQunfvrhkzZlgzXZKTkzVz5kwNGjRIhmFo4cKFOv7446vdhsfjUVRUlDZv3qysrCxFR0dr586d8ng82rRpk7xer0pLS3XYYYdVu52HH37YujRvwIABVrtpmmrdurU1s+fDDz/U+eefbz3fr18/9evXT5KUm5urVq1aKSkpScccc4wuvvhilZaWWjO9vF6vkpOTq42jf//+1d6fq2PHjtWuX1l2drbuvvtuv/64XC65XC7deOONio6OVuvWrfXQQw9pwoQJKi4u1v/93/9JKisaduvWTZKsG5y3bNlSr732WrUzvq666ip5PB4NGzZM48aNU/v27bVv3z6NHDlSM2fOVPv27fXhhx/qnHPO8bsU8ddff9UNN9ygwsJCzZ07V506dVLHjh117bXXKioqSnPmzNGRRx5pLb9jxw4de+yxtT5uAQBAaFCUAgAAteK7v1Ll4kjFWU81KSoqUlJSkl9bYmKiSktLtW/fPrVs2bLW2/IVpAoKCvTaa6/p4YcfVu/evbVv3z5de+21GjdunC699NKgRaW8vDw1adJEU6ZM0bRp0/zuMXXyySfL4/HI5XLpb3/7W7VxXHLJJX6PfTOjvF5vteu53W55vV7FxMRoz549VhFn8ODBeuedd/TMM8/I6/XK4XCooKBAzZs3l8vlktvtVnx8vN+2Kn+jX3048sgjlZmZWe0yhmHojjvu0EknnaSEhAS5XC5JUkJCgqSye2/NmjVLknTfffcpPj5en332mSSpR48eVW6Kn52drYSEBC1dutQqUPpmrB1xxBGSpHfffVf79+/3W++bb75R586d9e9//1tfffWVLrvsMp144ol6//339d577ykuLk7r169XcXGx4uLitGPHDr/L/wAAQHhQlAIAALXiK3wcyreXxcbGVlnfd8lZUVFRrbfj8Xi0ePFivfvuu3rrrbd05JFHavLkybriiitUUlKiqVOn6sknn9TYsWPVo0cP9enTR506ddL48eOtwtPevXvVtGlTPf3003r44Yer3P9IkuLj4xUTE+M3A6qy2bNnB5wp5Xa7lZubq0mTJkmS1q9f77fe+++/X6WgVfkyxsq5mjp1qo4++ugq2/Ldw8k3KymQmopkh8I3+8kXly8WwzD8vn3vnXfe0Wmnnaa2bdsGvDzy/vvv1+rVq/1mfPkKY9u2bZNUdoP6ipcISmX3+DrllFO0e/dujRo1Spdddpm8Xq/S09OVlJSkJ598Uvfdd5+++eYbDRgwQL/++qu6d+9e32kAAAB1RFEKAADUSmJioiRVmaVy8803KyUlRQ899FCN22jVqpV+++03vzbfN6D5ZtfUZPz48XrxxRfl8Xh0+umn6+mnn9YZZ5whSdq0aZMk6aKLLtLQoUP17bff6ocfftDChQv9ZkJJ0saNG9W2bVtJ0qhRozR79uwqr/Xyyy9r9OjRVdqzs7Pl9XplmqYKCwutYpDb7VZRUZF27dqlwsJCFRcXa+bMmZLKZnRVdN5552n37t2Kjo7WueeeqzFjxmjIkCEaO3as2rVr5zdDa8yYMerSpYtuvfXWgMWcffv2aenSpVWKNXbJy8tTSUmJtS99lwp+9913evrppzVjxgw9/PDD2rJli/r3768JEyZU2caOHTs0ffp0Pfnkk37tixcvliR98MEHGjFiRMDXf+qpp/TMM8/IMAy53W699NJLeumll1RUVKSbbrpJDzzwgL766ivNnTtXLVu2lNvtVu/eveszBQAA4CDw7XsAAKBWOnXqJEn6448//NoXL16sXbt2SSqbDVO5aOJ2u637/xx77LFatmyZ36ykFStWqEmTJlUu6wvm6quv1uuvv649e/aobdu2uu6665SWllblp0OHDrrqqqv017/+VatWrdLUqVP9trN69WqlpaVJKpsRdd1111nfomeapo466ihrlk9lt956q4466ihJ0tixY9W+fXu1b99eq1ev1tSpUzVq1Cht3bpVAwcO1Pr167V+/XpNmzbNbxtNmjTRYYcdpqSkJOXn5ystLU1JSUkaNWqUpk6dqhEjRig+Pl5JSUkqKSlRSkqKWrZsGfDm7WvWrNHYsWP94q/806FDh1rl92DMnz9f5557rvr162e9nqQq+evbt691s/HKHn30UXXu3Fljxoyx2kzT1CuvvKJbbrlFCxYs0OrVqwOu++STT8rlcmnw4MG66667tH//fu3YsUMJCQnWZZ5XXXWVXn/9dU2bNk0DBgxQdHR0fXQdAAAcAopSAACgVrp376527drp/ffft9p2796t3377zbqpeFpaWpVLy9auXWsVf84//3zl5+fr5ZdfliS5XC698MILOvPMM2v9zXE9e/bUkCFDrEvrLrrooqCFGElWQaziLKnc3Fz9/PPP1mwZ37K19dZbb6mgoEBTpkzRhg0btG/fPv3222+aMWOGiouL9dFHH+nbb7+tclP3YLZv324VmwYOHKglS5aob9++1o249+/fr/j4eBUXF1dZd+vWrVq1apVOO+20OvWhPs2fPz/g61e+/HDQoEH6/PPPtXv3br/2H374QdOmTdOUKVP81pk8ebKysrL0+OOP69prr9Wll15qzcaq7Oeff9bcuXOVlZWl+fPn68EHH1TPnj11+umnS5JOP/10dezYUS+++KJf4QsAAIQPRSkAAFArhmHoscce02uvvaZ//OMf+uyzz3TRRRcpJSXFmo0yYsQIffHFF7r//vu1ePFi3X///fr88881cuRISVJKSoomTpyo22+/XZdeeqlOPPFE/fLLL/rnP/95UDHVZrZLoHtgvf/++/J4PNZNyQsLC/XKK6/IMAzrZ9OmTdXe5+qrr77SjTfeqKVLl0qSfvzxRw0fPlxz587VihUrtHr1ag0ePLjG+HJzc7Vv3z516dLFeu1evXrpH//4h/X4888/17XXXqsmTZpUuXzymWeeUfPmzXXeeedV+zqhuqdUSUmJPvnkkyr3x6rM4/GotLRUKSkpevHFF632ffv26fLLL9cFF1yggQMHWu0vv/yy7rvvPs2aNUsJCQl69NFHZZqmTjvtNGVkZFTZ/rHHHqsVK1aoa9euGjdunJ566inl5eXp3XfflVR2zzLfzK1AxT0AAGA/7ikFAABq7aqrrpIkPfTQQ3rqqafUt29fffHFF2revLkk6fLLL9fevXutG40fddRRevbZZzV8+HBrG/fdd59SU1P14osvKiUlRYsXL1afPn0OOqbCwsJqvyWu8iyowsJCPfDAA+rfv7/1zXwzZ860Zm/55Ofna+vWrfrmm2+0detWv3tebdq0SZdddpkee+wx61vczj33XE2YMEFTpkyRVDajq1+/ftY6ge4FJUnNmjVTTk5O0Pjz8vLUvXt3zZkzR927d/eL46efftIzzzyj++67T02aNKmybmZmpubNm6fc3Fxt3ry5yiWSmzZtUk5OjmJjY/1mqmVlZam0tLTKrDepLJ8lJSVKS0tT8+bNNWfOHCUkJOiUU06xlvF4PNb/fcWw6667Ttu3b9dtt92mxx57TCNHjlRqaqqWLFmi7du365NPPrFee9y4cXrrrbf08ssv69xzz5UkNW/eXJ999pkGDRqk3r1768EHH9TNN99szSYzDEPdunXTwoULtXv3bk2fPl05OTmaP3++unfvriuuuELNmjXThAkTdMUVV6ioqEjXXHNN0LwDAAAbmAAAABHqxhtvNCVV+/P555/7rbN3717zvPPOMz/44INqt11UVGS2bNnSTEhIME888URz48aN1nPTp083r7zyyirruFwuc8KECaYk85NPPrHaX3nlFbN58+ZmWlpanfo3dOhQ0+FwmEcffbRZVFTk95zX6zWHDRtm9u7d2ywuLg64fklJidm8eXMzKSnJPO+888x9+/b5PT9mzBizSZMmZrNmzczmzZvX6icxMdGMioqy+nfCCSeYN9xwg7XN5557zrzgggtMSeamTZvMzz//3JRktm/f3ly3bp1ZXFxsdunSxezVq5dZUFBgmqZpbt682TRN0/ztt9/MxMREs3Xr1ubChQsD9ik7O9scMmSIKcmcMWOGaZqmuWbNGvPmm282U1JSzDPPPNNcs2aNaZqmWVBQYN5+++1mTEyMOWrUKCtPd955pynJvOWWW+qyOwAAQD0zTLOON1EAAABoIPbu3Suv12vNeKotr9frd4+pYEpKSqx7UtVWUVGR3nvvPV155ZVWW0ZGhmbMmKFrr71W6enptd7W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FR0dLafTWe26Xq9XpaWlio6OlsNBHRIAAAAAAIQfRakGbvHixfrwww/15JNPSpJiYmJkGIYWLFighx56SFFRUYqOjtbIkSOtdTIyMnT99dcrISFBUvm9pWbNmqWTTjopHN0AAAAAAADwQ1GqgevcubNeeuklderUSX/5y19033336eyzz9aIESM0YsSIgOv06tVLkydP1qBBg2yOFgAAAAAAoHa4lquBa9Omjd59910988wz6t69uwoLCzVr1qxq1/F4PPJ4PDZFCAAAAAAAUHfMlJKkB3LDHUG1zjrrLP3yyy+1Xr6oqEgulyuEEQEAAAAAABwailKN0O+//x7uEAAAAAAAAKrF5XsAAAAAAACwHUUpAAAAAAAA2I6iFAAAAAAAAGxHUQoAAAAAAAC2oygFAAAAAAAA21GUAgAAAAAAgO0oSjUCpaWl6tu3rxYsWBDuUAAAAAAAAGqFolQjMGfOHGVmZqpfv37hDgUAAAAAAKBWosIdQENwzGvH2PZaq0esrvM6Y8eO1bPPPms97tChg37//XdJktfr1SOPPCLTNHXqqadKkoqKihQTEyOn0ym3263CwkKNHTtWd999d/10AgAAAAAA4BBRlIoAy5cv14IFC3TKKadIkpxOp/Xc1KlTFR0drZ07d8owDElSr169NHnyZA0aNCgs8QIAAAAAANSEolQD53a79csvv+j0009XYmKi33NbtmzRxIkT9c4771gFKQAAAAAAgEjAPaUauNWrV8vr9apXr15q0qSJzj33XG3evFkul0sXX3yx+vXrp3POOSfguqZpyu12q7i42OaoAQAAAAAAqsdMqQZu7dq1Ovroo/Xss88qJSVFd955p2644QZ9/PHHevjhh9WxY0d16tRJpmkqLi5OkpSRkaHRo0crPj5eHo9HKSkpWrp0aZh7AgAAAAAAUI6iVAN35ZVX6sorr7QeP//880pLS1N+fr7OPvtsSVJsbKxmzpypE044QRL3lAIAAAAAAA0fl+9FmFatWsnr9WrHjh0qKSmR1+v1u/F5IF6v11oWAAAAAACgIWCmVAM3fvx4HXfccbriiiskSd9++60cDoeWL1+uv/71r4qKilJ0dLRGjhxprZORkaHrr79eCQkJksrvLTVr1iyddNJJ4egGAAAAAACAn7AWpbKystSnTx99+eWXat++vSRpzZo1GjVqlH7//XeN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LXppqzyFDjVNL5FRYczavzlaXrehZuku9RmcJklK7t5L2b/8LGd0jJp37mYta3o8ylm7ssH0qTHuJ/pUtU8/fLhRplfK/yNWznivEtqWWst6XIYKNsfoykm9tXPnTiV37yVJKs3PKxsjDmtdZYyQFPY+SZG5n7599y2rPdAY0e/SqyKuTxWFYj/98GHZtlx5ThXvjlJcK7dimpWfXP1lZB+lpKSo6ZHpim7azGov2LpJJTl71bxDFznj4iRJGzZsaBB9isT9FJuUrIR2R1ntgcaIDRs2RFSfGsp++uTR++QpdVnjr0/FMeLki6+IqD41pP3U5LDWKtq9o9oxomKckdCnUO8nOSRHlKnEI8vPF8rPI0wltC211mneoYtyN6wNOkY0lD41pP205NUtKs1zKuFIl5wx5YWEgu3R1meNEy9Is8aE3N/WBh0jXC5Xg+hTqPeTJJUmJyvvuOOs9qiC/Ur69juVtGmj/d26acOGDWqW7pK70KHC7dGKbeFRbHL5+YLvPMLXJ18+i3btCDpGSGoUx97+/ftVG4bpV9KvXnJysrKzs/3aTNPU008/rccff1zz589X3759a7u5gB599FH973//08KFC622yy67TEcddZSeeOIJv2UDzZTyJa1Zs7Id29CqrY2xglyXPk25amjwWRCmKRmG7njz/YjqU6j30wu3LJJklFXgK/KF4JBuenaApAr5LdtgpeW9uus/HzSIPjXG/USfqra/cNuisicq/IXTcuCvRjdPGyiv11t27PoEGSPGHTh+2U9171OV/JYtYDXd8cbciOtTbdoPpU/W8RvkL59jnhsoh8Ohpy6/wO81A/3l84435jaIPh1sezj301PDz69xptQdb8yNqD41lP005YohvgX82iuOEXe8MTei+tSQ9tOUKy+scaZUxfxGQp9CvZ/KznlV7UypKue8QWZK3fn2/AbRp4a0n6zPFJVn8ngl32eNm54dUH7OUIfPFOHqU6j302/de9Q4U6rLqpVl5ww1zJQa8/wAmaZZnt9qZkoFOueNxGMvLy9PycnJys3NteozgdRpppTPpEmTlJOTo9zcXH322Wfq16+fVqxYUS83OW/Xrp2Kior82jZt2qRTTjmlyrKxsbEBZ2U5nU45nU6/NkflnX2Q7ZW3ezDthmHUqb2+Ym8QffId5L5fwspMs15y0Lj204FRzWtUWbas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hzvMiLRv3z6/xxdccIG+/vprnXHGGUpKStKwYcM0Y8aM8ATXyPGZInTIbWiR3xAygQocDodpGEbAH4fDYTocDjMtLS3cYUYkh8Nh3njjjebhhx9ufvHFF1Wef/fdd8309PQwRNY4dO/e3Xz55Zf92lauXGn9f82aNWZSUpK5b98+u0NrFDZt2mQmJSWZpmmaH3/8sXnUUUeZo0aNMrOzs8McWeRLSkqqMiZ8//33ZseOHc2CggLzk08+MQ3DCFN0ke/kk082X3zxRetxdna22bNnTzMxMdHs27ev3ziBuomLizNPP/1089FHHzU3bNhQ5fnc3FzT4XCEIbLGoX379ub//d//WY9/+OEH0zAM8+effzZN0zR//vlnMzU1NUzRRbaUlBRz0qRJZmFhoZmRkWEed9xxptfrtZ7/4osvzB49eoQxwsjHZ4rQIbehRX7tFxXuohgalkCzeFB/nnrqKZ1++ukaNmyYxowZo4ceekjR0dGSpNNPP12bN28Oc4SRa+vWrTr33HOtxz/99JPOOuss7dixQ9HR0erevbuOPPJI/frrrzrxxBPDGGnkO/fcc/XLL7/ob3/7m7p166bJkyfryiuvDHdYESsqKkput9uvrWXLltq2bZvi4+N1yimnyDCMMEUX+VatWqXzzjvPetyiRQsNGzZMRx11lDZt2qTTTjtNN910kx5//PEwRhmZVq5cqW+++UaLFi1S37591aFDB91000264oorFBsbK0nMRjsEO3bs0OGHH249Pvroo2UYhtq3by+pbJzYu3dvmKKLbJ9++qnuuusuPf300xo2bJji4uL8xtnOnTtr27ZtYYww8vGZInTIbWiRX/sZJmcLgC0cDofy8/OVkJCgX3/9VZdffrn279+vu+66S126dNG0adO0YcMG/fjjj+EONSINHz5ccXFx+te//qXS0lKNHDlSGzZs0DnnnKM777xTP/74o2699VZt2bJFSUlJ4Q43olx77bXKz8/X/PnzdcUVV1jthmHou+++0/r163XOOefo448/DmOUkeuuu+7SRx99pGnTpumUU07R7t27dfPNN8vtduvjjz9WXl6ekpKS5PV6wx1qROrUqZNuu+026xJIj8ejs846S3feeafOP/98bdq0SWPHjuXy6UPk8Xj0+eef64UXXtB3332nsWPHasSIEUpNTeXYPUh9+vRR06ZN9f77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",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import akshare as ak\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import datetime\n",
    "\n",
    "# ===== 参数 =====\n",
    "symbol = \"CU0\"\n",
    "year_spans = [2, 3, 5, 8, 10, 13]\n",
    "\n",
    "today = datetime.datetime.today()\n",
    "full_start_date = (today - pd.DateOffset(years=max(year_spans))).strftime('%Y%m%d')\n",
    "end_date = today.strftime('%Y%m%d')\n",
    "\n",
    "# ===== 获取数据 =====\n",
    "df = ak.futures_main_sina(symbol=symbol, start_date=full_start_date, end_date=end_date)\n",
    "df[\"日期\"] = pd.to_datetime(df[\"日期\"])\n",
    "df = df.sort_values(\"日期\")\n",
    "\n",
    "# ===== 统计每年周期内的上涨月份次数 =====\n",
    "bar_data = {}\n",
    "\n",
    "for years in year_spans:\n",
    "    cutoff = today - pd.DateOffset(years=years)\n",
    "    df_cut = df[df[\"日期\"] >= cutoff].copy()\n",
    "\n",
    "    df_cut[\"ym\"] = df_cut[\"日期\"].dt.to_period(\"M\")\n",
    "\n",
    "    # 获取每月首日开盘与末日收盘\n",
    "    monthly = df_cut.groupby(\"ym\").agg(\n",
    "        open_price=(\"开盘价\", \"first\"),\n",
    "        close_price=(\"收盘价\", \"last\"),\n",
    "        month=(\"日期\", lambda x: x.iloc[0].month)\n",
    "    )\n",
    "    monthly[\"up\"] = monthly[\"close_price\"] > monthly[\"open_price\"]\n",
    "\n",
    "    # 每月上涨次数\n",
    "    up_counts = monthly.groupby(\"month\")[\"up\"].sum()\n",
    "    total_counts = monthly.groupby(\"month\")[\"up\"].count()\n",
    "    up_counts = up_counts.reindex(range(1, 13), fill_value=0)\n",
    "    total_counts = total_counts.reindex(range(1, 13), fill_value=0)\n",
    "\n",
    "    bar_data[years] = up_counts\n",
    "\n",
    "    total_up = up_counts.sum()\n",
    "    total_months = total_counts.sum()\n",
    "    prob = total_up / total_months if total_months else 0\n",
    "\n",
    "    print(f\"最近 {years} 年上涨月数 / 总月数：{total_up:.0f} / {total_months:.0f} ≈ {prob:.2%}\")\n",
    "\n",
    "# ===== 画图：上涨次数 =====\n",
    "plt.figure(figsize=(12, 6))\n",
    "bar_width = 0.1\n",
    "months = np.arange(1, 13)\n",
    "offsets = np.linspace(-bar_width * len(year_spans) / 2, bar_width * len(year_spans) / 2, len(year_spans))\n",
    "\n",
    "for i, years in enumerate(year_spans):\n",
    "    counts = bar_data[years]\n",
    "    plt.bar(months + offsets[i], counts.values, width=bar_width, label=f\"{years}年\")\n",
    "\n",
    "plt.xticks(months, [f\"{m}月\" for m in months], rotation=-90)\n",
    "plt.xlabel(\"月份\")\n",
    "plt.ylabel(\"上涨次数\")\n",
    "plt.title(f\"{symbol.upper()} 各周期每月上涨次数\")\n",
    "plt.grid(axis='y', linestyle='--', alpha=0.5)\n",
    "plt.legend()\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
